home *** CD-ROM | disk | FTP | other *** search
/ PC Media 7 / PC MEDIA CD07.iso / share / prog / cm / cmtiter.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-09-06  |  1.8 KB  |  42 lines

  1. // CmTIter.h
  2. // -----------------------------------------------------------------
  3. // Compendium - C++ Container Class Library
  4. // Copyright (C) 1992-1994, Glenn M. Poorman, All rights reserved
  5. // -----------------------------------------------------------------
  6. // Abstract container iterator template definition.
  7. // -----------------------------------------------------------------
  8.  
  9. #ifndef _CMTITER_H
  10. #define _CMTITER_H
  11.  
  12. #include <cm/include/cmdefs.h>
  13.  
  14. template <class T> class CmTIterator {          // Iterator class definition.
  15. public:
  16.   virtual Bool     done    () const = 0;        // Check if end of container.
  17.   virtual const T& next    ()       = 0;        // Return and advance.
  18.   virtual const T& previous()       = 0;        // Return and backup.
  19.   virtual const T& current () const = 0;        // Return current object.
  20.   virtual void     first   ()       = 0;        // Move to first object.
  21.   virtual void     last    ()       = 0;        // Move to last object.
  22.  
  23.   const T& nextOccurrence    (const T&);        // Advance to next equal.
  24.   const T& previousOccurrence(const T&);        // Backup to previous equal.
  25.  
  26.   operator int() const;                         // Check if not end.
  27.  
  28.   const T& operator++();                        // Advance and return.
  29.   const T& operator++(int);                     // Return and advance.
  30.   const T& operator+=(int);                     // Advance n places.
  31.   const T& operator--();                        // Backup and return.
  32.   const T& operator--(int);                     // Return and backup.
  33.   const T& operator-=(int);                     // Backup n places.
  34.   const T& operator()() const;                  // Return current object.
  35. };
  36.  
  37. #if defined(__TURBOC__) || defined(__xlC__)
  38. #include <cm/include/cmtiter.cc>
  39. #endif
  40.  
  41. #endif
  42.